home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Auge 4000
/
Auge 4000 #60 (1991-08-16)(Amiga User Gruppe Einzugsgebiet 4000).zip
/
Auge 4000 #60 (1991-08-16)(Amiga User Gruppe Einzugsgebiet 4000).adf
/
SuperDuper
/
SuperDuper.doc
< prev
next >
Wrap
Text File
|
1991-11-04
|
24KB
|
518 lines
SuperDuper
© 1991 Sebastiano Vigna
SuperDuper is a disk copier/formatter that tries to be to disk
handling what Mostra is to IFF displaying: a fast, compact,
system-friendly tool which couples speed, features, and some bells and
whistles to make your life easier.
By "fast" I mean exactly what you're hoping---blazingly fast. A disk
is copied and verified in about 99s. Without verify, the time drops
to 70s. You can buffer a disk in RAM in 36s, and then making a
verified copy takes 67s, while a non-verified copy takes 37s. Adding
another destination drive increases verified copy times by 34s, but
doesn't increment non-verified copy times at all (the Amiga can write
and step more than one drive at a time). Thus, if you really trust
your drives and your media you can make four copies in 37s. These
timings can vary with the system configuration, the multitasking
overhead, the disposition of the blocks on the surface of the disk,
and the DMA access of the custom chips.
Main features:
- SuperDuper copies from/to any combination of Amiga drives.
- SuperDuper has a switchable 880K RAM buffer that allows for any
number of duplications while reading the source disk only once. The
combination of destination drives can be changed at each pass. If you
haven't enough RAM, but you do have a hard disk, you can create on it
an image file that will act as a buffer. Also, any kind of virtual
disk is supported for buffering (VD0:, RAD:, FMS:...).
- SuperDuper checksums the RAM buffer. If some badly written program
is trashing your memory, you are alerted. Thus, buffered copies are
as safe as direct copies.
- SuperDuper can allocate a buffer of less than 880K: in this case,
it will use real-time compression in order to do multiple pass copies
with maximum efficiency. Most disks can be wholly buffered on a 1MB
machine. You can also make multiple copies with multiple passes.
Copy times are (almost) unaffected.
- SuperDuper will automatically retry tracks which produce a verify
error. The number of retries is programmable.
- SuperDuper is highly system-friendly---the use of CPU time is
negligible, so you can multitask efficiently.
- SuperDuper has the option of incrementing the creation date of the
copy so AmigaDOS doesn't get confused. If, however, the option is
switched on and the disk is not an AmigaDOS disk, SuperDuper won't
increment the date.
- SuperDuper is faster than diskcopy---actually it pushes the drives
to their limits. At the time of this writing, SuperDuper is the
fastest Amiga copier which doesn't tear down the system.
- SuperDuper alerts the user with sound (and optionally voice) about
the operations in progress---so you can really be doing something
else!
- SuperDuper can format both OFS and FFS disks.
- SuperDuper displays a list of the last few disks copied. If you do
a lot of copying, you'll find this feature much more than useful.
- SuperDuper can manage the Amiga drives without help from the
trackdisk.device. Through the supplied utility SDBootInstall, you can
create a boot disk which will keep the system away from your drives,
giving you back more than 30K per unit. This is very useful when
doing intensive buffered copying on a 1M machine.
- SuperDuper can automatically start any copy or format operation by
monitoring the disks extraction and insertion.
- SuperDuper works under 1.2, 1.3 and 2.0
- SuperDuper has an elapsed time indicator.
- SuperDuper has a beautiful name. 8^)
To use SuperDuper, you have simply to double-click on its icon. You
will see five rows of gadgets. The first one has at most one gadget
selected: it's the source. The second one lets you select the
destination drive(s). The other lines contain option and action
gadgets.
Every gadget can be activated via mouse or keyboard. The first row
can be activated with 0,1,2,3, and the second one with 4,5,6,7. For
the other gadgets, you can use a capital letter which is usually the
initial, except for FFS ('N') and VDBUF ('U'). As a bonus, you can
use Q or ESC to exit, instead of hitting the close gadget. Finally,
you can use RETURN instead of G to start a copy/format operation.
To make your first copy, simply select in the first line the gadget
for the drive which contains the source floppy, and in the second line
the gadget(s) for the drive(s) containing the destination(s). Then
hit the GO gadget. After some time, the display will flash, a beep
will be generated, and the copy will be finished. The elapsed time
will be shown. Note that a first beep will be generated when the copy
is almost finished, so you have time to prepare yourself.
The action gadgets
Three gadgets control SuperDuper's copy/format operations:
- STOP stops any operation. If pressed while the multi-pass
real-time compression buffer is selected and no operation is in
progress, it will empty the buffer and reset the pass count, thus
allowing you to buffer another source even if the previous one wasn't
finished (see the description of the buffering system).
- INBUF can be used only when a buffer is selected; it fills the
buffer by reading from the source drive.
- GO initiates a copy operation. If no buffer is selected, the
source is copied to the destination(s). If a buffer is selected, the
content of the buffer is written on the destination(s). If FORMAT is
selected, the destination drive(s) are formatted. The corresponding
gadget remains highlighted to remind you what you're doing.
When SuperDuper starts a GO operation which is not a format, it
scrolls up the name list and marks the current drive as "<UNKNOWN>".
This happens because it can't know if the disk is a DOS disk before
reading the track 0. After less than a second, the track will be
read, and the name will be changed to "<NDOS>" if the disk is not a
DOS disk. Otherwise, as soon as the track 80 is read (the progress
bar is in the middle) the name of the disk will be displayed (and
spoken, if you switched TALK on). Beware: if you are using a
multi-pass buffer, the name of the disk could be unavailable at the
first pass.
If SuperDuper finds an error on read or verify, it will retry writing
the track, each time incrementing the first number of the Rtry:Err
indicator. If after a number of retries specified in the gadget
"Try#" the error remains, SuperDuper will increment the second number
(the error counter) and will continue. Note that while retrying
SuperDuper can't be stopped: don't set the "Rtry#" gadget to 99
unless you really know that's what you want to do.
The progress bar is drawn in a different color if you're doing an
INBUF operation---so you can be sure you read the new chunk in the
buffer. Note also that the progress bar is not updated if something
locks the screen (like using menus). The update is delayed until the
screen is unlocked (thus SuperDuper won't get stuck as will almost all
programs which do any rendering to their windows).
The copy options
Four gadgets control the copy/format options.
- VERIFY turns verify on and off (you can also format without
verifying). However, turning off verify is not recommended.
- DATE toggles on or off the change of the date of an AmigaDOS disk.
This change is necessary so AmigaDOS can distinguish otherwise
identical disks; if two truly identical disks are inserted in the
drives, AmigaDOS gets confused and crashes. However, if for some
reason you want a "physical" copy, you would turn off this option.
DATE will be ignored for a non-AmigaDOS disk.
- FFS enables the formatting of FFS disks; for copying it is ignored.
- FORMAT enables formatting. When you hit GO, all destination drives
will be formatted. To copy again, you must deselect FORMAT by
clicking it again. If VERIFY is selected, the format process is
verified.
The gadget prefixed by "Label:" allows you to choose a name that
SuperDuper will use while formatting. The name must be chosen before
clicking GO---it is disabled (ghosted) during the formatting.
The buffering system
Three gadgets control the full-featured buffering system of
SuperDuper. Buffering is useful when you have to do a lot of copies:
you read a disk only once, and then you can make as many copies as you
want without rereading it. It also has other uses: if you have to
create distribution disks (for instance for a commercial package) you
can create them using high speed virtual floppies, such as Commodore's
RAD: or Matt Dillon/Jim Cooper's FMS disk. SuperDuper can then read
from those virtual disks and make many copies on floppies at high
speed.
Since data integrity is a primary issue, SuperDuper checksums the RAM
buffer. The possibility of writing a munged track is very low. A
strict control is also kept on the validity of the buffer---you can't
write by error random data on your disks.
- BUFFER allocates a RAM buffer. SuperDuper will try to get an 880K
buffer: if you don't have enough memory, a warning will be issued,
showing the number of buffers allocated (each buffer is 11K) and
warning you that the real-time compression system is activated.
Beware of the fact that many program tend to crash under low-memory
conditions, so if you have 1MB or less you should close everything you
can before hitting BUFFER, and you should possibly also use KILLSYS.
The memory allocated will be used as a buffer to make multiple pass
copies. If SuperDuper can find 880K, the process is very simple and
uses very little of the CPU, but if (for instance on a 1MB machine)
it's impossible to buffer a whole disk this way, SuperDuper will use a
real-time compression algorithm. As the disk is read in the buffer,
it is compressed in a special format. The gain in size is usually 35%
for empty tracks, 20-30% for text, 15-25% for programs and 5-10% for
IFF ILBM images. Tracks which can't be compressed are simply stored.
The only disks which can't really be compressed are disks filled with
compressed files, like .lzh or .zoo files, and for the others the size
gain is enough to buffer a whole disk on a 1MB machine. 8^)
Of course, the compression overhead eats a lot of CPU power. The
algorithm has been devised in such a way that compression and
decompression are absolutely real-time, i.e., you will notice no
slowdown. However, beware of the fact that while doing compression
SuperDuper always fully uses the CPU. Even moving the mouse can slow
down the operation in progress. Anyway, if you have all of your
memory allocated for the buffer, it is definitively not a good idea to
do anything besides waiting for the copy to finish.
A little side-effect of the allocation of all of the available RAM is
that some requester could be turned into an alert, or could even
disappear without waiting for the user to acknowledge it.
- HDBUF creates an 880K file in the current directory of SuperDuper,
and uses this file as a buffer, exactly like BUFFER does with RAM. Of
course you must use it only if you have a hard disk, and you started
SuperDuper from it. The GO operation will be a little slower, but if
you have a good hard disk you should be able to make copies as fast as
with a RAM buffer.
- VDBUF is probably SuperDuper's most esoteric feature. By typing a
device name in the string gadget near this one, you can select any
device. The unit number is taken from the gadget with the label
"VD#". The device you specified will be used as a buffer for your
disks. SuperDuper expects the device to behave like the
trackdisk.device, namely it must be able to write data at specific
offsets. The main devices you can use are:
RAD: - the recoverable RAM drive. Configure it in your mountlist as
a floppy, and you can use it as a buffer.
FMS: - Matt Dillon/Jim Cooper's virtual floppy-on-hard disk.
VD0:, etc. - other recoverable, sector-oriented RAM drives
The device you specify is checked on opening to see if it has enough
space to contain a full disk. The check is done simply on the number
of sectors available---if there are enough sectors, and they are
arranged differently than on a floppy, you will be able to use the
device as a buffer, but don't expect AmigaDOS to get anything
meaningful from it.
WARNING: many of these devices are buggy and return NO ERROR on
unsuccessful opening or failed size test. Some of them in this case
will trash your memory. Be sure that the device is configured
properly---try first an AmigaDOS command on it.
Of course, many people will find incredible ways to use this feature.
For instance, you can send data through the serial.device and write it
directly to a floppy (for techies: if you want try something like
that, consider that SuperDuper reads 512 bytes on opening to test for
size, and then reads 1760 chunks of 512 bytes, one for each sector,
for every copy. The sectors are read sequentially as they are
distributed on the disk, so if the device ignores the offset
indication, you can feed it with 880K of a continuous bytes stream.
Buffering is another story though---the offset indication is important
because SuperDuper places the blocks on the device "in the right
place" as soon as it encounters them).
A BUFFER or HDBUF is considered non-valid as soon as allocated,
because it will contain random info. To make it valid, you must read
in a floppy. VDBUF instead starts with the assumption that the buffer
is valid.
This mechanism allows you to prepare, for instance, a distribution
disk at high speed in RAD: or in your hard disk using FMS:, and then
to copy it to floppies directly.
The user interface gadgets
- TALK activates SuperDuper's ability to give its status by voice.
Currently only English is supported.
- AUTO activates automatic operation starting. SuperDuper will
monitor the disk insertion and ejection. When all destination(s) have
been ejected and re-inserted, a GO operation is started. If FORMAT is
selected, the destination(s) are formatted. Else, if a buffer is
selected, it is written to the destination(s). If neither formatting
nor buffering is requested, SuperDuper will monitor the source, too,
and will start a disk-to-disk(s) copy as soon as the source and all
destination(s) have been ejected and re-inserted.
- KILLSYS closes the Workbench, audio, and voice, flushes the memory
and opens a very little screen with only two colors. This way, the
maximum amount of memory of your system is at your disposal. If the
Workbench can't be closed for any reason, a warning is issued (usually
some application has a window opened on the Workbench screen). When
you want to get back, hit the gadget again (this time it will be named
RESTORE). This feature is very powerful if coupled with
SDBootInstall.
SDBootInstall
When your system boots up (at power on or after a reset), the
operating system searches for available drives, and creates some
trackdisk.device tasks accordingly. These tasks take a lot of memory
for their buffers (>30K), but SuperDuper doesn't use them at all,
because it has its internal routines.
If you have to do intensive copy work, and you have 1MB of memory or
less, you could find it useful to boot up your system in a special
configuration that will shut down almost all trackdisk.device tasks,
thus freeing a lot of memory.
To accomplish this, do as follows:
1) Make a copy of your usual Workbench 1.2 (or greater) disk (from now
on we work on the copy).
2) Delete some programs to make room---preferences, diskcopy and
format are good candidates.
3) Copy SuperDuper on the disk root directory (by dragging its icon on
the disk icon or using the CLI).
4) Edit the startup-sequence of the disk (it's in the "s" directory).
Delete it entirely, and substitute it with
SetPatch >NIL:
Run >NIL: <NIL: SD
EndCLI >NIL:
If you're under 1.2, don't put in the first line (you don't have a
SetPatch command).
5) Now put the disk in df0:, and run the utility SDBootInstall. A
special bootblock will be installed on the floppy. When booting from
it, the operating system (and you) will be able to access only drive
0---the other ones will be for SuperDuper's use only. To get back to
normality, a reboot is necessary. You will gain 3/4K per drive using
this method (for techies: it is perfectly legal---the bootblock
simply AllocUnit()s the drives with ID>0).
SuperDuper and your system
SuperDuper has been written keeping in mind that a good program
doesn't have to eliminate everything from the system in order to work.
The Amiga has a very efficient multitasking kernel which allows for
resource arbitration.
When SuperDuper is started, it won't allocate anything from your
system. As soon as a source/destination gadget is clicked, it will
inhibit all of the drives (so don't select a gadget while reading or
writing to floppies) and then will grab the disk.resource. Until the
resource is released, *no one else* can access the Amiga drives. This
is necessary in order to avoid unpredictable collisions with the
system or other programs.
If you need to temporarily access your drives, you must simply
deselect all SuperDuper source/destination gadgets: the disk system
will be restarted (it will be re-grabbed on a gadget selection of
course). Under 1.3 you will have to eject all drives. This is
necessary because there is no way to tell trackdisk.device that the
head position has changed. For the same reason, when exiting from the
program under 1.3, you will be asked to eject all disks.
The CPU use of SuperDuper is almost unnoticeable. You can do anything
else, and you shouldn't notice any slowdown.
This however is not true if you use compression. In this case, not
only the system will be slowed down (a priority 0 task will almost
always be active), but *any* operation (including moving the mouse
pointer) will slow down SuperDuper.
Under 2.0 this is not necessary. Moreover, if you use KillClick (or
any other utility which legally kills drive clicks under 2.0)
SuperDuper won't click empty drives (drive clicking is necessary for
monitoring the disk insertion; using KillClick is good but you must be
sure your drives won't try to move past track 0 if asked to do so).
As I mentioned before, you should avoid running SuperDuper while a 16
color hi-res screen (or a 4-color ECS productivity mode screen) is
displayed. The video DMA access will interfere with the
disk/CPU/Blitter access to the point that copy times will drop to
incredible values---reading and compressing a disk in the buffer can
take more than 100s.
SuperDuper and you
"Well," you could say, "SuperDuper is a great copier---but how can I
trust him for making my copies? This guy diddles with
hardware---maybe I should use the system DiskCopy command."
This is not a good idea. First of all, SuperDuper is *incredibly*
picky about verifying. You will get more verify error messages than
with the standard copy commands (for techies: SuperDuper verifies
also the MFM timing bits, not only the data bits; this means a 200%
efficiency improvement in catching verify errors and generally bad
media).
Moreover, the 1.3 trackdisk.device has unpleasant side-effects on
frequently read/written tracks. These side-effects are cleared when
you do a copy of the disk with SuperDuper (for techies:
trackdisk.device doesn't check for MFM bits being read in correctly,
and doesn't re-MFM the track before writing it; if a MFM timing bit is
read wrong, it will stay wrong forever, possibly causing read errors;
but SuperDuper re-MFMs every track it copies, thus restoring every MFM
timing bit to its correct value).
Finally, if you don't like coffee-breaks during your copies, you'd
better use the fastest copier available---namely SuperDuper.
A word on copy protection
SuperDuper won't copy protected disks (or if it will it's just a
coincidence). I do not believe in copy protection.
However, SuperDuper will faithfully reproduce checksum errors on the
source disk. Thus, if you got the typical "Key <n> checksum error"
you can make a copy of the disk before fixing it. SuperDuper won't do
any surgery: use a good tool (such as DiskSalv or FixDisk) for that.
Avoid DiskDoctor.
Acknowledgments
The first person I must thank a thousand times is Dirk Reisig. It was
by means of his suggestions that I sped up SuperDuper to the current,
amazing values. I wrote him a letter which he answered gently with a
long explanation of the optimizations performed by PCopy. The first
time I read the letter it seemed greek to me, but little by little I
learned all the mysteries of MFM encoding and disk direct hardware
driving. Moreover, I learned from the source code of TrackSalve the
usage of the blitter for MFM encoding and many other subtle things.
In other words, without the help of Dirk you would have never seen
anything after DFC5.
The second guy behind the birth of SuperDuper is Tom Rokicki. He
pushed me to write a substitute for TurboBackup, and overall suggested
the main thing---that on the Amiga is possible to write many disks at
the same time. Without this trick, you could never do four
non-verified copies in 37s. Tom also tested all pre-whatever-
greek-letter versions, always giving useful comments... and risking
the life of his drives 8^). Moreover, I had time to work on
SuperDuper because the AmigaTeX system is so incredibly efficient I
got a lot of spare time while writing math papers...
Last but not least, Randell Jesup at Commodore drove me through the
labyrinth of non-specified-specs, hardware quirks, strange behaviors,
and system esoteric features. Without his help SuperDuper could
probably work... but I wouldn't trust it for *my* copies 8^).
The name SuperDuper popped up during a rather intensive BIX
discussion. Many other names were proposed, but in the end I chose
this one---it has symmetry, correctly defines the product and has a
simple shortening (SD). Thus, a thousand thanks to Kent Kalnasy and
Dave Barrans for suggesting this name.
Many features were not my ideas. An incredible number of BIX users
came up with excellent suggestions, many of which were actually
implemented. Thanks to them you have support for buffering on any
device (I never use RAD: nor FMS:, so I didn't think it could be
useful). Moreover, Kenneth Pak-kin Wong provided the basic materials
for the icon.
But, as always, the biggest *thanks* goes to the beta-testers of
SuperDuper: Dennis Atkin, Vittorio Calzolari, Jim Cooper, Doug
Erdely, Charlie Fair, Blaine Gardner, Robert Jenks, John Jones, Kent
Kalnasy, Robert Kesterson, Paul King, Randy Menzer, Linda Munson, Tom
Rokicki, Sergio Ruocco, Reinhard Spisser, Jeff Todd, Carlo Todeschini,
Michael Scott Velez and Marco Zandonasi. Beta-testing a copier is
different from anything else---if it doesn't work you won't get a
marginally corrupted picture on your display: rather, the Fish Disks
it took an hour to copy could be unusable. A special kind of patience
is needed under these conditions 8^).
This program is copyrighted, but freely distributable. This software
is made available on an as-is basis; don't come to me if you destroy
your entire Fish Disk library with it! Of course, it was tested
rather extensively before it was released...
Comments, complaints, desiderata are welcome.
Sebastiano Vigna
BIX: svigna
UUCP: ...{uunet|piramid|rutgers}!cbmvax!cbmehq!cbmita!sebamiga!seba
Via Valparaiso, 18
I-20144 Milano ITALY